
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Mavne学习文档 - 学习卡片</title>
      <style>
        body { font-family: sans-serif; background-color: #f0f8ff; color: #333; display: flex; flex-direction: column; align-items: center; padding: 50px 20px; }
        .header h1 { font-size: 32px; }
        .grid-container { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; width: 100%; max-width: 1200px; }
        .card-container { perspective: 1200px; cursor: pointer; height: 250px; }
        .card { width: 100%; height: 100%; position: relative; transform-style: preserve-3d; transition: transform 0.7s; border-radius: 16px; box-shadow: 0 4px 16px rgba(0,0,0,0.08); }
        .card-container.flipped .card { transform: rotateY(180deg); }
        .card-face { position: absolute; width: 100%; height: 100%; backface-visibility: hidden; display: flex; flex-direction: column; box-sizing: border-box; border-radius: 16px; background-color: #fff; padding: 24px; }
        .card-back { background-color: #f0fff4; transform: rotateY(180deg); justify-content: space-between; }
        .card-category { font-size: 14px; color: #0052d9; margin-bottom: 8px; font-weight: 500; }
        .card-question { font-size: 20px; font-weight: 500; flex-grow: 1; display: flex; align-items: center; justify-content: center; text-align: center; }
        .card-answer-wrapper { flex-grow: 1; overflow-y: auto; }
        .card-answer { font-size: 15px; line-height: 1.7; }
        .card-footer { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 16px; margin-top: 16px; }
        .card-source { font-size: 13px; color: #8a919f; border-top: 1px solid #f0f0f0; padding-top: 12px; margin-top: 12px; }
      </style>
    </head>
    <body>
      <div class="header">
        <h1>Mavne学习文档 - 学习卡片</h1>
      </div>
      <div class="grid-container">
        
    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">理论</div>
          <div class="card-question">Maven是基于什么核心概念构建的？它的主要用途是什么？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">理论</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">Maven是基于项目对象模型（POM）的概念构建的。它的主要用途是管理Java项目，进行依赖管理（jar包依赖管理）和项目构建（项目编译、打包、测试、部署）。</div>
          </div>
          <div class="card-source">来源: 二、 介绍</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">机制</div>
          <div class="card-question">Maven在查找项目依赖时，仓库的查找优先级是怎样的？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">机制</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">Maven查找依赖的优先顺序为：本地仓库 > 私服 (如果配置了的话) > 公共仓库 (如果配置了的话) > 中央仓库。</div>
          </div>
          <div class="card-source">来源: 5.1 仓库分类</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">请列举并解释文档中提到的五个常用的Maven命令。</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">1. `mvn compile`: 编译项目源代码。<br>2. `mvn clean`: 清理项目构建产生的文件。<br>3. `mvn test`: 运行项目的测试用例。<br>4. `mvn package`: 将项目打包，通常是打成jar或war包。<br>5. `mvn install`: 将打好的包安装到本地仓库，供其他项目依赖。</div>
          </div>
          <div class="card-source">来源: 4.3 Maven的常用命令</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">配置</div>
          <div class="card-question">为什么通常需要在Maven的`settings.xml`中配置一个像阿里云这样的公共仓库镜像？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">配置</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">因为Maven的中央仓库在国外，直接访问下载依赖的速度可能会很慢。配置一个国内的公共仓库（如阿里云）作为中央仓库的镜像，可以将下载请求指向国内服务器，从而显著提高依赖下载速度。</div>
          </div>
          <div class="card-source">来源: 5.3.2 公共仓库（重点）</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">理论</div>
          <div class="card-question">在Maven中，唯一标识一个依赖构件的“坐标”由哪三个部分组成？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">理论</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">每个构件的坐标由三个部分组成：`groupId` (项目标识)、`artifactId` (项目名)、和 `version` (版本号)。</div>
          </div>
          <div class="card-source">来源: 6.3 导入依赖jar</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">特性</div>
          <div class="card-question">请解释Maven依赖范围（scope）中`compile`, `provided` 和 `test` 的区别。</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">特性</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">`compile`: 这是默认值，依赖在所有阶段都有效（测试、编译、运行、打包），并且会随项目一起发布。<br>`provided`: 类似于`compile`，但期望JDK或容器会提供这个依赖，因此它会参与编译和测试，但不会被打包发布（例如servlet-api.jar）。<br>`test`: 依赖只在测试时使用，用于编译和运行测试代码，不会随项目发布（例如junit.jar）。</div>
          </div>
          <div class="card-source">来源: 6.7 依赖生命周期</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">模式</div>
          <div class="card-question">Maven标准项目结构中，`src/main/java` 和 `src/main/resources` 目录分别用于存放什么内容？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">模式</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">`src/main/java` 目录用于存放项目的Java源代码（如service, dao等）。`src/main/resources` 目录用于存放项目的配置文件（如jdbc.properties等）。</div>
          </div>
          <div class="card-source">来源: 6.2.4 项目结构</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">技术</div>
          <div class="card-question">在IDEA中部署Maven Web项目到Tomcat时，“war”和“war exploded”两种模式有什么区别？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">技术</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">“war”模式是先将项目打成一个war包，然后将这个war包发布到Tomcat。“war exploded”模式则是直接将项目的文件结构（包括文件夹、jsp、class文件等）直接复制到Tomcat的部署目录中。因为“war exploded”模式支持热部署，所以通常在开发时使用。</div>
          </div>
          <div class="card-source">来源: 6.5.2 部署web项目</div>
        </div>
      </div>
    </div>

    <div class="card-container" onclick="this.classList.toggle('flipped');">
      <div class="card">
        <div class="card-face card-front">
          <div class="card-category">配置</div>
          <div class="card-question">如何通过修改`settings.xml`文件来配置Maven的本地仓库位置？</div>
          <div class="card-footer">点击卡片查看答案</div>
        </div>
        <div class="card-face card-back">
          <div class="card-category">配置</div>
          <div class="card-answer-wrapper">
            <div class="card-answer">在`settings.xml`文件中，找到`<settings>`标签，在其中添加或修改`<localRepository>`标签，并将其内容设置为你想要作为本地仓库的磁盘目录路径。例如：`<localRepository>D:\Program Files\maven\myrepository</localRepository>`。</div>
          </div>
          <div class="card-source">来源: 4.1 本地仓库</div>
        </div>
      </div>
    </div>

      </div>
    </body>
    </html>
